import axios from "axios";
import { message } from "ant-design-vue";
import { API_BASE_URL } from "./config/apiConfig";

// 创建 Axios 实例
const myAxios = axios.create({
    baseURL: API_BASE_URL,
    timeout: 10000,
    withCredentials: true,
});

// 全局请求拦截器 - 使用 cookie/session 机制，不再手动添加 token
myAxios.interceptors.request.use(
    function (config) {
        return config;
    },
    function (error) {
        return Promise.reject(error);
    }
);

// 全局响应拦截器
myAxios.interceptors.response.use(
    function (response) {
        const { data } = response;

        // 处理未登录错误 (40100)
        if (data.code === 40100) {
            // 仅当不是登录相关的请求时才显示提示
            if (!response.config.url?.includes('/user/login') &&
                !response.config.url?.includes('/user/register')) {
                message.warning('如需保存对话记录，请登录');
            }

            // 不再自动跳转到登录页，允许未登录用户继续访问页面
            // 返回一个特殊的错误对象，供调用者处理
            return Promise.reject({
                code: 40100,
                message: '未登录',
                response
            });
        }

        // 处理其他错误
        if (data.code !== 0 && data.code !== 200) {
            message.error(data.message || '请求失败');
            return Promise.reject(data);
        }

        // 成功返回数据
        return response;
    },
    function (error) {
        // 网络错误或超时
        if (error.message.includes('timeout')) {
            message.error('请求超时，请重试');
        } else if (!error.response) {
            message.error('网络错误，请检查网络连接');
        }

        return Promise.reject(error);
    }
);

export default myAxios;